package com.unitd.base.frame.plugin.module.dto;

import com.google.common.collect.Maps;
import lombok.extern.slf4j.Slf4j;

import java.util.HashMap;
import java.util.Map;

/**
 * 友传业务系统封装的统一响应对象封装类
 *
 * @author Hudan
 * @version 1.0
 * @filename ResponseUtils.java
 * @copyright www.symdata.cn
 * @date 2020/62/14
 */
@Slf4j
public class ResponseUtils {

    /**
     * 构建统一格式返回对象
     *
     * @param requestCode 反馈代码
     * @param msg         反馈说明
     * @param data        具体反馈数据
     * @return 反馈结果
     */
    public static Map<String, Object> toResponsObject(int requestCode, String msg, Object data) {
        Map<String, Object> obj = Maps.newHashMap();
        obj.put("errno", requestCode);
        obj.put("errmsg", msg);
        if (data != null) {
            obj.put("data", data);
        }
        return obj;
    }

    /**
     * 反馈成功
     *
     * @param data 具体反馈数据
     * @return 反馈结果
     */
    public static Map<String, Object> toResponsSuccess(Object data) {
        Map<String, Object> rp = toResponsObject(0, "执行成功", data);
        log.info("response:" + rp);
        return rp;
    }

    /**
     * 反馈成功
     *
     * @param msg 成功说明
     * @return 反馈结果
     */
    public static Map<String, Object> toResponsMsgSuccess(String msg) {
        return toResponsObject(0, msg, null);
    }

    /**
     * 根据数据条件,显示成功反馈
     *
     * @param data 需要展示的数据
     * @return
     */
    public static Map<String, Object> toResponsSuccessForSelect(Object data) {
        Map<String, Object> result = new HashMap<>(2);
        result.put("list", data);
        return toResponsObject(0, "执行成功", result);
    }

    public static Map<String, Object> toResponsFail(String msg) {
        return toResponsObject(1, msg, null);
    }

//
//    /**
//     * 反馈默认成功
//     *
//     * @return 默认的响应对象
//     */
//    public static BaseRespDTO success() {
//
//        return success("处理成功!");
//    }
//
//    /**
//     * 反馈默认成功
//     *
//     * @param rspData 需要响应的数据对象
//     * @return 默认的响应对象
//     */
//    public static BaseRespDTO success(Object rspData) {
//
//        return setResponseData(ResultEnum.SUCCESS, ResultEnum.SUCCESS.getMessage(), rspData);
//    }
//
//    /**
//     * 反馈默认失败
//     *
//     * @return 默认的响应对象
//     */
//    public static BaseRespDTO error() {
//
//        return setResponseData(ResultEnum.FAIL, ResultEnum.FAIL.getMessage(), null);
//    }
//
//    /**
//     * 反馈默认失败
//     *
//     * @return 默认的响应对象
//     */
//    public static BaseRespDTO error(Exception e) {
//
//        return setResponseData(ResultEnum.FAIL, e.getMessage(), null);
//    }
//
//    /**
//     * 根据错误消息 反馈默认失败
//     *
//     * @param errMessage 异常信息
//     * @return 默认的响应对象
//     */
//    public static BaseRespDTO error(String errMessage) {
//
//        return setResponseData(ResultEnum.FAIL, errMessage, null);
//    }
//
//    /**
//     * 反馈默认成功
//     *
//     * @param rspData 需要响应的数据对象
//     * @return 默认的响应对象
//     */
//    public static BaseRespDTO success(BaseEnum resultEnum, Object rspData) {
//        return setResponseData(ResultEnum.SUCCESS, resultEnum.getMessage(), rspData);
//    }
//
//    /**
//     * 根据错误消息 反馈默认失败
//     *
//     * @param resultEnum 异常枚举对象信息
//     * @param arguments  错误描述信息占位数据
//     * @return 默认的响应对象
//     */
//    public static BaseRespDTO error(BaseEnum resultEnum, Object... arguments) {
//
//        return error(resultEnum, MessageFormat.format(resultEnum.getMessage(), arguments));
//    }
//
//    /**
//     * 根据错误消息 反馈默认失败
//     *
//     * @param resultEnum 异常枚举对象信息
//     * @param errMessage 异常信息
//     * @return 默认的响应对象
//     */
//    public static BaseRespDTO error(BaseEnum resultEnum, String errMessage) {
//
//        return setResponseData(resultEnum, errMessage, null);
//    }
//
//    /**
//     * 根据错误消息 反馈默认失败
//     *
//     * @param resultEnum 异常枚举对象信息
//     * @param rspData    响应数据
//     * @return 默认的响应对象
//     */
//    public static BaseRespDTO error(BaseEnum resultEnum, Object rspData) {
//
//        return setResponseData(resultEnum, resultEnum.getMessage(), rspData);
//    }
//
//    /**
//     * 根据错误消息 反馈默认失败
//     *
//     * @param errMessage 异常信息
//     * @param rspData    响应数据
//     * @return 默认的响应对象
//     */
//    public static BaseRespDTO error(String errMessage, Object rspData) {
//
//        return setResponseData(ResultEnum.FAIL, errMessage, rspData);
//    }
//
//    /**
//     * 封装的公共的设置响应信息的方法
//     *
//     * @param rspCd  响应代码
//     * @param rspInf 响应说明
//     * @return 响应对象
//     */
//    public static BaseRespDTO setResponseData(BaseEnum rspCd, String rspInf) {
//
//        BaseRespDTO responseDto = new BaseRespDTO();
//        responseDto.setCode(rspCd.getCode());
//        responseDto.setMessage(rspInf);
//        return responseDto;
//    }
//
//    /**
//     * 封装的公共的设置响应信息的方法
//     *
//     * @param rspCd   响应代码
//     * @param rspInf  响应说明
//     * @param rspData 响应数据
//     * @return 响应对象
//     */
//    public static BaseRespDTO setResponseData(BaseEnum rspCd, String rspInf, Object rspData) {
//
//        BaseRespDTO responseDto = new BaseRespDTO();
//        responseDto.setCode(rspCd.getCode());
//        responseDto.setMessage(rspInf);
//        responseDto.setData(rspData);
//        return responseDto;
//    }
}